package org.springblade.modules.admin.vo.feishu;

import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.core.mp.base.BaseEntity;
import org.springblade.core.tool.utils.DateUtil;
import org.springblade.modules.admin.vo.MaintainPlanConfigVO;
import org.springframework.format.annotation.DateTimeFormat;

import java.util.Date;
import java.util.List;

/**
 * @author: Sharry
 * @createTime: 2024-05-15 14:22
 * @version: Version-1.0
 */
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "LarkMaintainPlanConfigVO对象", description = "Lark电梯排期合规表格VO")
public class LarkMaintainPlanConfigVO extends BaseEntity {

	@ApiModelProperty(value = "电梯快速识别码")
	private String elevatorNum;

	@ApiModelProperty(value = "省名")
	private String provinceName;

	@ApiModelProperty(value = "市名")
	private String cityName;

	@ApiModelProperty(value = "区名")
	private String adName;

	@JsonFormat(pattern = DateUtil.PATTERN_DATE)
	@ApiModelProperty(value = "电梯_当前逾期临界日期")
	private Date overdueDate;

	@ApiModelProperty(value = "项目名称")
	private String buildingName;

	@ApiModelProperty(value = "楼栋号")
	private String elevatorAddress;

	@ApiModelProperty(value = "项目地址")
	private String address;

	@ApiModelProperty(value = "梯型式")
	private String modeName;

	/**
	 * 外包情况
	 */
	@ApiModelProperty("合同来源 1:外包合同2:非外包合同,-1:无状态默认值")
	private Integer fromType;

	/**
	 * 年审类型
	 */
	@ApiModelProperty(value = "0-年审，1-非年审")
	private Integer useType;

	/**
	 * 1:非年审，2:年审
	 * 这个值没有直接用到，但看起来也是年审判断值，暂时保留
	 */
	@ApiModelProperty(value = "1:非年审，2:年审")
	private Integer auditType;

	@ApiModelProperty(value = "电梯所属维保组")
	private String deptName;

	/**
	 * 保养状态 : 对应枚举 ElevatorMaintainStatusEnums
	 */
	@ApiModelProperty(value = "保养状态")
	private Integer maintainStatus;

	/**
	 * 电梯状态: 1-正常 2-停梯
	 */
	@ApiModelProperty(value = "电梯状态： 1-正常 2-停梯")
	private Integer isStop;

	@ApiModelProperty(value = "年审梯保养合规状态 1-正常，2-明天即将违规，3-已违规")
	private Integer complianceStatus;

	@ApiModelProperty(value = "年审梯保养合规状态集合，多个逗号隔开")
	private String searchComplianceStatus;

	@ApiModelProperty(value = "年审梯保养合规状态描述")
	private String complianceStatusDesc;

	@ApiModelProperty(value = "违规天数")
	private Integer overdueDays;

	@JsonFormat(pattern = DateUtil.PATTERN_DATE)
	@ApiModelProperty(value = "上次维保签字日期")
	private Date previousPlanDate;

	@JsonFormat(pattern = DateUtil.PATTERN_DATE)
	@ApiModelProperty(value = "下次保养计划日期")
	private Date nextPlanDate;

	@ApiModelProperty(value = "下次保养计划排期是否存在逾期风险")
	private Boolean isOverdueRisk;

	@ApiModelProperty(value = "其它剩余计划是否存在逾期 0-否，1-是")
	private Integer otherOverdue;

	@ApiModelProperty(value = "有无未来排期： 0-无 1-有")
	private Integer isPlan;

	@ApiModelProperty(value = "下次保养计划执行人名称")
	private String nextUserNames;

	@ApiModelProperty(value = "保养计划名称")
	private String templatePlanName;

	/**
	 * 首次保养日期
	 */
	@ApiModelProperty(value = "首次保养时间")
	@DateTimeFormat(pattern = DateUtil.PATTERN_DATE)
	@JsonFormat(pattern = DateUtil.PATTERN_DATE)
	private Date firstTime;

	/**
	 * 保养排期开始日期
	 */
	@ApiModelProperty(value = "保养排期开始日期")
	@DateTimeFormat(pattern = DateUtil.PATTERN_DATE)
	@JsonFormat(pattern = DateUtil.PATTERN_DATE)
	private Date startTime;

	/**
	 * 保养排期结束日期
	 */
	@ApiModelProperty(value = "保养排期结束日期")
	@DateTimeFormat(pattern = DateUtil.PATTERN_DATE)
	@JsonFormat(pattern = DateUtil.PATTERN_DATE)
	private Date endTime;

	/**
	 * 小区id
	 */
	@ApiModelProperty(value = "小区id")
	private Long buildingId;


	/**
	 * 电梯id
	 */
	@ApiModelProperty(value = "电梯id")
	private Long elevatorId;
	/**
	 * 保养计划id
	 */
	@ApiModelProperty(value = "任务计划id")
	private Long taskPlanId;
	/**
	 * 部门id集合
	 */
	@ApiModelProperty(value = "部门id集合")
	private String deptIds;
	/**
	 * 部门名称集合
	 */
	@ApiModelProperty(value = "部门名称集合")
	private String deptNames;
	/**
	 * 用户id集合
	 */
	@ApiModelProperty(value = "用户id集合")
	private String userIds;
	/**
	 * 用户名称集合
	 */
	@ApiModelProperty(value = "用户名称集合")
	private String userNames;

	@ApiModelProperty(value = "梯无忧_合同详情页链接所需id")
	private Long contractId;

	@ApiModelProperty("合同来源 1:外包合同2:非外包合同")
	private Long  fromTypeContractId;

	@ApiModelProperty("是否质保合同0:否，1是,-1表示无状态")
	@TableField(exist = false)
	private Integer isQuaGuarantee;

	@ApiModelProperty(value = "梯型式类型编码")
	private Long modeType;

	@ApiModelProperty(value = "项目id集合，多个逗号隔开")
	private String buildingIds;

	@ApiModelProperty(value = "任务数")
	private Long planTotal;

	@ApiModelProperty(value = "结束更新时间")
	private String endUpdateTime;

	@ApiModelProperty(value = "筛选未排期计划")
	private Boolean isShowNotPlanTask;

	@ApiModelProperty(value = "筛选从未排期计划的电梯")
	private Boolean notPlanTaskEle;

	@ApiModelProperty(value = "筛选待清除未来保养排期")
	private Boolean needClearFeaturePlan;

	@ApiModelProperty(value = "下次保养计划执行人id")
	private String nextUserIds;

	@ApiModelProperty(value = "上一次维保工单id")
	private Long previousPlanId;

	@ApiModelProperty(value = "下一次维保工单id")
	private Long nextPlanId;

	@ApiModelProperty(value = "维保状态集合，多个逗号隔开")
	private String searchMaintainStatus;

	@ApiModelProperty(value = "电梯出场编码集合")
	private List<String> factoryNumberList;

	@ApiModelProperty(value = "电梯出场编码")
	private String factoryNumber;

	private Long buildingUserId;

	private String buildingUserName;

	private String buildingUserNameExt;

	// 以下2024-08-29飞书多维表格所需新增

	@ApiModelProperty(value = "梯无忧_合同服务时间(开始)")
	private Date contractBeginTime;

	@ApiModelProperty(value = "梯无忧_合同服务时间(结束)")
	private Date contractEndTime;

	@ApiModelProperty(value = "梯无忧_当前执行合同管理状态")
	private Integer contractStatus;

	@ApiModelProperty(value = "梯无忧_当前执行合同编号")
	private String contractNo;

	// 2024-10-22 新增
	@ApiModelProperty(value = "是否存在下一份合同")
	private String nextContractStatus;

	/**
	 * 2025-04-09 新增
	 */
	@ApiModelProperty(value = "合同签约来源：1:新签, 2:续签, 3:转签, 4:丢失, 5:夺回, 6:新梯移交, 7:免保转签")
	private String contractSignSource;

}
